<template>
  <div class="todo-footer">
    <label>
      <!-- 思路:v-model直接绑定给我们设置的计算属性(计算属性可读可写) -->
      <!-- 又想监听 又想得到值 就用计算属性 它的值是通过计算属性得到的 -->
      <!-- 现在可以用数据双向绑定v-model是 因为现在绑定的是自己的计算属性,而不是props 而计算属性是可读可写的 而计算属性里面的set方法可以用App里面的方法修改todoList的done -->
      <input type="checkbox" v-model='allIsChecked'  
      />
    </label>
    <span> <span>已完成{{checkedNum}}</span> / 全部{{todoList.length}}</span>
    <button class="btn btn-danger" @click="deletAllChecked">清除已完成任务</button>
  </div>
</template>

<script>
export default {
  name: "Footer",
  props:['todoList','checkAllhandle','deletAllChecked'],
  computed:{
    allIsChecked:{
      set(value){
        // console.log('3');
        this.checkAllhandle(value)
      },
      get(){
      /* 
      every:返回布尔值,遍历数组,如果每次回调函数都返回true,则every返回true,只要有一个回调函数返回false,则停止遍历,every返回false
      */
      return this.todoList.every(item=>item.done)
      }
    },
    checkedNum(){
      return this.todoList.reduce((p,c)=>(c.done?p+1:p),0)
    }
  }
};
</script>

<style scoped>
/*footer*/
.todo-footer {
  height: 40px;
  line-height: 40px;
  padding-left: 6px;
  margin-top: 5px;
}

.todo-footer label {
  display: inline-block;
  margin-right: 20px;
  cursor: pointer;
}

.todo-footer label input {
  position: relative;
  top: -1px;
  vertical-align: middle;
  margin-right: 5px;
}

.todo-footer button {
  float: right;
  margin-top: 5px;
}

</style>